/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.sgs.mb;

import br.com.sgs.auxiliar.SolicitacaoAux;
import br.com.sgs.bundle.MessageBundleLoader;
import br.com.sgs.entity.Aluno;
import br.com.sgs.entity.ModeloSolicitacao;
import br.com.sgs.entity.Solicitacao;
import br.com.sgs.fachada.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import org.primefaces.component.selectonemenu.SelectOneMenu;

/**
 *
 * @author Eric
 */
@ManagedBean(name="alunoSolicitacaoNewMB")
@ViewScoped
public class AlunoSolicitacaoNewMB implements Serializable {
   
    @ManagedProperty(value = "#{loginMB}")
    private LoginMB lmb;
    
    //Select One Menu
    private SelectOneMenu cmbModeloSolicitacao;
    private List<SelectItem> lsmodelosolicitacao = new ArrayList<SelectItem>();
    private int idmodelosolicitacao;
    private ModeloSolicitacao modelosolicitacaoselecionada;
    private Aluno alunoselecionado;
  

    /**
     * Creates a new instance of CampusNewMB
     */
    
    
    public AlunoSolicitacaoNewMB() {
    }
    
    @PostConstruct
    public void init() {
        try {
            
            if (getLmb().getAluno() != null) {
                setAlunoselecionado(getLmb().getAluno());
            }

            popularCombos();

        } catch (Exception e) {
            System.err.println("Erro no init do alunoSolicitacaoNewMB");
        }
    }

    public String salvar() {
        try {

            Solicitacao solicitacao = new Solicitacao();
            
            solicitacao.setAluno(alunoselecionado);
            solicitacao.setDtcriacao(new Date());
            solicitacao.setModeloSolicitacao(modelosolicitacaoselecionada);
            solicitacao.setStatus(SolicitacaoAux.ABERTA);

            SolicitacaoIFachada ifach = new SolicitacaoFachada();
            ifach.inserir(solicitacao);

            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, MessageBundleLoader.getMessage("msgSalvoSucesso"), ""));
            
            return "ALUNOSOLICITACAOLIST";

        } catch (Exception e) {
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL, MessageBundleLoader.getMessage("erroNaoEncontrado"), ""));
            e.printStackTrace();
            return null;
        }
    }
    
    public String voltar() {
        try {
            return "SOLICITACAOLIST";
        } catch (Exception e) {
            System.err.println("Erro no método voltar");
            return null;
        }
    }
    
    public void popularCombos() {
        try {

            getLsmodelosolicitacao().clear();

            ModeloSolicitacaoIFachada fach = new ModeloSolicitacaoFachada();
            List<ModeloSolicitacao> ls = fach.findModeloSolicitacao();

            for (ModeloSolicitacao modelosolicitacao : ls) {
                getLsmodelosolicitacao().add(new SelectItem(modelosolicitacao.getId(), modelosolicitacao.getDescricao()));
            }

        } catch (Exception e) {
            System.err.println("Erro no metodod popularCombo");
            e.printStackTrace();
        }
    }

    public void selecionarModeloSolicitacao() {
        try {

            setIdmodelosolicitacao(Integer.parseInt(getCmbModeloSolicitacao().getValue().toString()));

            if (getIdmodelosolicitacao() != 0) {

                ModeloSolicitacaoIFachada fach = new ModeloSolicitacaoFachada();
                setModelosolicitacaoselecionada(fach.findModeloSolicitacaoById(getIdmodelosolicitacao()));

            } else {
                setModelosolicitacaoselecionada(null);
            }

        } catch (Exception e) {
            System.err.println("Erro no selecionarSolicitacao");
        }
    }

    /**
     * @return the cmbModeloSolicitacao
     */
    public SelectOneMenu getCmbModeloSolicitacao() {
        return cmbModeloSolicitacao;
    }

    /**
     * @param cmbModeloSolicitacao the cmbModeloSolicitacao to set
     */
    public void setCmbModeloSolicitacao(SelectOneMenu cmbModeloSolicitacao) {
        this.cmbModeloSolicitacao = cmbModeloSolicitacao;
    }

    /**
     * @return the lsmodelosolicitacao
     */
    public List<SelectItem> getLsmodelosolicitacao() {
        return lsmodelosolicitacao;
    }

    /**
     * @param lsmodelosolicitacao the lsmodelosolicitacao to set
     */
    public void setLsmodelosolicitacao(List<SelectItem> lsmodelosolicitacao) {
        this.lsmodelosolicitacao = lsmodelosolicitacao;
    }

    /**
     * @return the idmodelosolicitacao
     */
    public int getIdmodelosolicitacao() {
        return idmodelosolicitacao;
    }

    /**
     * @param idmodelosolicitacao the idmodelosolicitacao to set
     */
    public void setIdmodelosolicitacao(int idmodelosolicitacao) {
        this.idmodelosolicitacao = idmodelosolicitacao;
    }

    /**
     * @return the modelosolicitacaoselecionada
     */
    public ModeloSolicitacao getModelosolicitacaoselecionada() {
        return modelosolicitacaoselecionada;
    }

    /**
     * @param modelosolicitacaoselecionada the modelosolicitacaoselecionada to set
     */
    public void setModelosolicitacaoselecionada(ModeloSolicitacao modelosolicitacaoselecionada) {
        this.modelosolicitacaoselecionada = modelosolicitacaoselecionada;
    }

    /**
     * @return the alunoselecionado
     */
    public Aluno getAlunoselecionado() {
        return alunoselecionado;
    }

    /**
     * @param alunoselecionado the alunoselecionado to set
     */
    public void setAlunoselecionado(Aluno alunoselecionado) {
        this.alunoselecionado = alunoselecionado;
    }

    /**
     * @return the lmb
     */
    public LoginMB getLmb() {
        return lmb;
    }

    /**
     * @param lmb the lmb to set
     */
    public void setLmb(LoginMB lmb) {
        this.lmb = lmb;
    }
    
  

}
